package fr.charlott.batch.mapper;

import org.springframework.batch.item.file.mapping.FieldSetMapper;
import org.springframework.batch.item.file.transform.FieldSet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindException;

import fr.charlott.core.repository.model.Collection;
import fr.charlott.core.repository.model.Produit;
import fr.charlott.core.service.CategorieService;
import fr.charlott.core.service.SaisonService;

public class ProduitFieldSetMapper implements FieldSetMapper<Produit>{

	private static final String FIELD_NOM = "nom";
	private static final String FIELD_REFERENCE = "reference";
	private static final String FIELD_CATEGORIE = "categorie";
	private static final String FIELD_PRIX = "prix";
	private static final String FIELD_COLLECTION = "collection";
	private static final String FIELD_SAISON = "saison";
	
	@Autowired
	private CategorieService categorieService;
	
	@Autowired
	private SaisonService saisonService;
	
	@Override
	public Produit mapFieldSet(FieldSet fieldSet) throws BindException {
		
		Produit produit = new Produit();
		produit.setNom(fieldSet.readString(FIELD_NOM));
		produit.setReference(fieldSet.readString(FIELD_REFERENCE));
		produit.setCategorie(categorieService.chercherParNom(fieldSet.readString(FIELD_CATEGORIE)));
		produit.setPrix(fieldSet.readDouble(FIELD_PRIX));
		produit.setCollection(Collection.getEnumForValue(fieldSet.readString(FIELD_COLLECTION)));
		produit.setSaison(saisonService.chargerParAnnee(fieldSet.readShort(FIELD_SAISON)));
		return produit;
	}

}
